home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 22 / AACD 22.iso / AACD / Utilities / MUIFontCat / MUIFontCatalog.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2001-05-26  |  59.9 KB  |  2,162 lines

  1. /*
  2. ** -----------------------------------------------
  3. **  $VER: MUIFontCatalog V3.04 (26 May 2001)
  4. **  ©1996-2001 Michael Merkel
  5. ** -----------------------------------------------
  6. */
  7.  
  8. SIGNAL ON SYNTAX
  9. SIGNAL ON HALT
  10. SIGNAL ON BREAK_C
  11. OPTIONS RESULTS
  12.  
  13. /*
  14. TRACE ALL
  15. */
  16.  
  17. /*
  18. ** first of all add the needed libraries
  19. */
  20.  
  21. IF ~show("L","rmh.library")
  22. THEN IF ~AddLib("rmh.library", 0, -30) THEN EXIT
  23.  
  24. IF ~show("L","rxasl.library")
  25. THEN IF ~AddLib("rxasl.library", 0, -30) THEN EXIT
  26.  
  27. IF ~show("L","rxmui.library")
  28. THEN IF ~AddLib("rxmui.library", 0, -30) THEN EXIT
  29.  
  30. /*
  31. ** DEBUG MODE!!!
  32. */
  33.  
  34. Call rxMuiOpt("DEBUGMODE SHOWERR")
  35.  
  36. /*
  37. ** Make sure rexx support is opened
  38. */
  39. IF ~SHOW('L','rexxsupport.library')
  40. THEN CALL ADDLIB('rexxsupport.library',0,-30)
  41. IF ~SHOW('L','softlogik:libs/slarexxsupport.library')
  42. THEN CALL ADDLIB('softlogik:libs/slarexxsupport.library',0,-30)
  43.  
  44. IF ~SHOW('P','PAGESTREAM')
  45. THEN DO
  46.    CALL ShowRequester("Start PageStream first!", "Of course...")
  47.    Exit
  48. END
  49. ADDRESS 'PAGESTREAM'
  50.  
  51. pgsInstallDir = 'PageStream:Scripts/MUIFontCatalog'
  52. pgsName       = 'MUIFontCatalog'
  53. pgsVersion    = 'V3.04'
  54. pgsAuthor     = 'Michael Merkel'
  55. pgsCopy          = '©1996-2001 Michael Merkel'
  56. pgsLVer          = '3.00'
  57. pgsDate          = '05/26/2001'
  58. pgsPic        = pgsInstallDir || '/MUIFontCatalog.pic'
  59. standardPrefs = pgsInstallDir || '/MUIFontCatalog.prefs'
  60.  
  61. TRUE     = 1
  62. FALSE     = 0
  63.  
  64. /*
  65. ** default settings
  66. */
  67. Call SetDefaultPrefs
  68.  
  69. /*
  70. ** do some checks before
  71. */
  72. Call CheckRoutines
  73.  
  74. /*
  75. ** load prefs
  76. */
  77. Call LoadPrefs(standardPrefs)
  78. Call BuildGUI
  79. muiBusyWinOpen = FALSE
  80.  
  81. /*
  82. ** open the window
  83. */
  84. 'LOCKINTERFACE TRUE'
  85. Call Set("muiWin", "OPEN", 1)
  86. Call GetAttr("muiWin", "OPEN", "o")
  87. IF (o = 0)
  88. THEN DO
  89.     Say "can't open window"
  90.     EXIT
  91. END
  92.  
  93. Call Set("muiWin", "SLEEP", 1)
  94. Call PrefsWindowSet()
  95. Call GetFontList()
  96. Call Set("muiWin", "SLEEP", 0)
  97. Call EventLoop()
  98. Call PrefsWindowGet()
  99. Call Set("muiWin", "OPEN", 0)
  100. Call BusyOpen("doing fonts...", 2, "...\n...", "...\n...", "", anzFonts, 100, 0)
  101. Call FontCatalog()
  102. Call CleanUp()
  103.  
  104. EXIT
  105.  
  106. /* /// AddObject(name)
  107. */
  108. AddObject:
  109.     PARSE ARG name
  110.  
  111.     Call BusyText(1, "%c%bplacing font%n\n%c"|| name ||"%n")
  112.     Call BusyText(2, "%c%bplacing%n\n%c%n")
  113.     Call BusyProgress(2, 30)
  114.     IF (BusyHandle(1, fontNum, 0, 0) = 1)
  115.     THEN DO
  116.         Call CleanUp()
  117.         EXIT
  118.     END
  119.  
  120.     d1 = startx
  121.     d2 = starty
  122.     oldStartx = startx
  123.     oldStarty = starty
  124.  
  125.     Call DrawTextObject(name)
  126.  
  127.     pwidth  = posi.right  - posi.left
  128.     pheight = posi.bottom - posi.top
  129.  
  130.     /*
  131.     ** remember maximum width and height of the sample
  132.     */
  133.     IF (pheight > maxheight)
  134.     THEN maxheight = pheight
  135.  
  136.     IF (pwidth > maxwidth)
  137.     THEN maxwidth = pwidth
  138.  
  139.     /* recalculate the textframe -> no fixed fontsize! */
  140.     IF (prefs.PV_ffSize = 0)
  141.     THEN DO
  142.         /* original aspect of width:height of one generated sample */
  143.         gsf = pwidth / pheight
  144.  
  145.         IF (gsf > psf)
  146.         THEN factor = (psx   - 2*(sbw + thumbSpace)) / pwidth
  147.         ELSE factor = (psynt - 2*(sbw + thumbSpace)) / pheight
  148.  
  149.         newpwidth  = (factor * pwidth)
  150.         newpheight = (factor * pheight)
  151.  
  152.         centerdeltax = (psx   - newpwidth ) / 2
  153.         centerdeltay = (psynt - newpheight) / 2
  154.  
  155.         d3 = d1 + psx
  156.         d4 = d2 + psy
  157.  
  158.         IF (prefs.PV_vertical = 0)
  159.         THEN DO
  160.             /*
  161.             ** vertical mode is off:
  162.             ** 1. check if too far right -> next row
  163.             */
  164.             IF ((d3 - 1) > (pagesizex - rightgap - pbw - gap))
  165.             THEN DO
  166.                 startx = leftgap + pbw + gap
  167.                 starty = d4 + gap
  168.                 d1 = startx
  169.                 d2 = starty
  170.                 d3 = d1 + psx
  171.                 d4 = d2 + psy
  172.             END
  173.             
  174.             /*
  175.             ** 2. check if too far down -> next page
  176.             */
  177.             IF ((d4 - 1) > (pagesizey - bottomgap - pbw - (lsize+1) - gap))
  178.             THEN DO
  179.                 startx = leftgap + pbw + gap
  180.                 starty = topgap  + pbw + gap
  181.                 lastpic = 1       /* last picture already placed! print or flip page and go on... */
  182.                 fontNum = fontNum - 1
  183.                 'DELETEOBJECT OBJECTID 'txtid' WINDOW "'oldwinname'"'
  184.                 RETURN
  185.             END
  186.             startx = d1 + psx + gap
  187.         END
  188.         ELSE DO
  189.             /*
  190.             ** vertical mode is on:
  191.             ** 1. check if too far down -> next column
  192.             */
  193.             IF ((d4 - 1) > (pagesizey - bottomgap - pbw - (lsize+1) - gap))
  194.             THEN DO
  195.                 startx = d3 + gap
  196.                 starty = topgap  + pbw + gap
  197.                 d1 = startx
  198.                 d2 = starty
  199.                 d3 = d1 + psx
  200.                 d4 = d2 + psy
  201.             END
  202.  
  203.             /*
  204.             ** 2. check if too far right -> next page
  205.             */
  206.             IF ((d3 - 1) > (pagesizex - rightgap - pbw - gap))
  207.             THEN DO
  208.                 startx = leftgap + pbw + gap
  209.                 starty = topgap  + pbw + gap
  210.                 lastpic = 1       /* last picture already placed! print or flip page and go on... */
  211.                 fontNum = fontNum - 1
  212.                 'DELETEOBJECT OBJECTID 'txtid' WINDOW "'oldwinname'"'
  213.                 RETURN
  214.             END
  215.             starty = d2 + psy + gap
  216.         END
  217.  
  218.         /* calculate the new position and dimensions of the sample */
  219.         newl = d1 + centerdeltax
  220.         newt = d2 + centerdeltay
  221.         newr = newl + newpwidth
  222.         newb = newt + newpheight
  223.  
  224.         'EDITTEXTOBJ POSITION 'newl newt newr newb' OBJECTID 'txtid' WINDOW "'oldwinname'"'
  225.     END
  226.     ELSE DO
  227.         /*
  228.         ** calculate textframes -> fixed fontsize!
  229.         */
  230.         factor = 1.0
  231.         d3 = d1 + pwidth  + 2*(sbw + thumbSpace)
  232.         d4 = d2 + pheight + 2*(sbw + thumbSpace) + (txtSize + 1)
  233.  
  234.         IF (prefs.PV_vertical = 0)
  235.         THEN DO
  236.             /*
  237.             ** vertical mode is off:
  238.             ** 1. check if too far right -> next row
  239.             */
  240.             IF ((d3 - 1) > (pagesizex - rightgap - pbw - gap))
  241.             THEN DO
  242.                 startx = leftgap + pbw + gap
  243.                 starty = d2 + maxheight + 2*(sbw + thumbSpace) + (txtsize + 1) + gap
  244.                 d1 = startx
  245.                 d2 = starty
  246.                 d3 = d1 + pwidth  + 2*(sbw + thumbSpace)
  247.                 d4 = d2 + pheight + 2*(sbw + thumbSpace) + (txtsize+1)
  248.                 IF ((d3 - 1) > (pagesizex - rightgap - pbw - gap))
  249.                 THEN DO
  250.                     IF (prefs.errorSkip = 0)
  251.                     THEN DO
  252.                         res = SizeError()
  253.                         IF (res = 2)
  254.                         THEN DO
  255.                             prefs.errorSkip = 1
  256.                         END
  257.                     END
  258.                     IF (prefs.errorSkip = 1) | (res = 1)
  259.                     THEN DO
  260.                         Call BusyText(2, "%c%bskipping current picture...%n\n%c%n")
  261.                         Call BusyProgress(2, 100)
  262.                         'DELETEOBJECT OBJECTID 'txtid' WINDOW "'oldwinname'"'
  263.                         startx = oldStartx
  264.                         starty = oldStarty
  265.                         Return 0
  266.                     END
  267.                 END
  268.                 maxheight = 0
  269.                 maxwidth  = 0
  270.             END
  271.  
  272.             /*
  273.             ** 2. check if too far down -> next page
  274.             */
  275.             IF ((d4 - 1) > (pagesizey - bottomgap - pbw - (lSize+1) - gap))
  276.             THEN DO
  277.                 startx = leftgap + pbw + gap
  278.                 starty = topgap  + pbw + gap
  279.                 IF ((starty + pheight + 2*(sbw + thumbSpace) + (txtsize + 1)) > (pagesizey - bottomgap - pbw - (lSize+1) - gap))
  280.                 THEN DO
  281.                     IF (prefs.errorSkip = 0)
  282.                     THEN DO
  283.                         res = SizeError()
  284.                         IF (res = 2)
  285.                         THEN DO
  286.                             prefs.errorSkip = 1
  287.                         END
  288.                     END
  289.                     IF (prefs.errorSkip = 1) | (res = 1)
  290.                     THEN DO
  291.                         Call BusyText(2, "%c%bskipping current picture...%n\n%c%n")
  292.                         Call BusyProgress(2, 100)
  293.                         'DELETEOBJECT OBJECTID 'txtid' WINDOW "'oldwinname'"'
  294.                         startx = oldStartx
  295.                         starty = oldStarty
  296.                         Return 0
  297.                     END
  298.                 END
  299.                 fontNum = fontNum - 1
  300.                 maxheight = 0
  301.                 maxwidth  = 0
  302.                 lastpic = 1
  303.                 'DELETEOBJECT OBJECTID 'txtid' WINDOW "'oldwinname'"'
  304.                 RETURN
  305.             END
  306.  
  307.             startx = d3 + gap
  308.         END
  309.         ELSE DO
  310.             /*
  311.             ** vertical mode is on:
  312.             ** 1. check if too far down -> next column
  313.             */
  314.             IF ((d4 - 1) > (pagesizey - bottomgap - pbw - (lSize+1) - gap))
  315.             THEN DO
  316.                 startx = d1 + maxwidth + 2*(sbw + thumbSpace) + gap
  317.                 starty = topgap  + pbw + gap
  318.                 d1 = startx
  319.                 d2 = starty
  320.                 d3 = d1 + pwidth  + 2*(sbw + thumbSpace)
  321.                 d4 = d2 + pheight + 2*(sbw + thumbSpace) + (txtsize+1)
  322.                 IF ((d4 - 1) > (pagesizey - bottomgap - pbw - (lSize+1) - gap))
  323.                 THEN DO
  324.                     IF (prefs.errorSkip = 0)
  325.                     THEN DO
  326.                         res = SizeError()
  327.                         IF (res = 2)
  328.                         THEN DO
  329.                             prefs.errorSkip = 1
  330.                         END
  331.                     END
  332.                     IF (prefs.errorSkip = 1) | (res = 1)
  333.                     THEN DO
  334.                         Call BusyText(2, "%c%bskipping current picture...%n\n%c%n")
  335.                         Call BusyProgress(2, 100)
  336.                         'DELETEOBJECT OBJECTID 'txtid' WINDOW "'oldwinname'"'
  337.                         startx = oldStartx
  338.                         starty = oldStarty
  339.                         Return 0
  340.                     END
  341.                 END
  342.                 maxheight = 0
  343.                 maxwidth  = 0
  344.             END
  345.  
  346.             /*
  347.             ** 2. check if too far right -> next page
  348.             */
  349.             IF ((d3 - 1) > (pagesizex - rightgap - pbw - gap))
  350.             THEN DO
  351.                 startx = leftgap + pbw + gap
  352.                 starty = topgap  + pbw + gap
  353.                 IF ((startx + pwidth + 2*(sbw + thumbSpace)) > (pagesizex - rightgap - pbw - gap))
  354.                 THEN DO
  355.                     IF (prefs.errorSkip = 0)
  356.                     THEN DO
  357.                         res = SizeError()
  358.                         IF (res = 2)
  359.                         THEN DO
  360.                             prefs.errorSkip = 1
  361.                         END
  362.                     END
  363.                     IF (prefs.errorSkip = 1) | (res = 1)
  364.                     THEN DO
  365.                         Call BusyText(2, "%c%bskipping current picture...%n\n%c%n")
  366.                         Call BusyProgress(2, 100)
  367.                         'DELETEOBJECT OBJECTID 'txtid' WINDOW "'oldwinname'"'
  368.                         startx = oldStartx
  369.                         starty = oldStarty
  370.                         Return 0
  371.                     END
  372.                 END
  373.                 fontNum = fontNum - 1
  374.                 maxheight = 0
  375.                 maxwidth  = 0
  376.                 lastpic = 1
  377.                 'DELETEOBJECT OBJECTID 'txtid' WINDOW "'oldwinname'"'
  378.                 RETURN
  379.             END
  380.  
  381.             starty = d4 + gap
  382.         END
  383.         /*
  384.         ** calculate the new position and dimensions of the sample
  385.         */
  386.         newl = d1 + (sbw + thumbSpace)
  387.         newt = d2 + (sbw + thumbSpace)
  388.         newr = newl + pwidth
  389.         newb = newt + pheight
  390.         'EDITTEXTOBJ POSITION 'newl newt newr newb' OBJECTID 'txtid' WINDOW "'oldwinname'"'
  391.     END
  392.  
  393.     IF (txtsize > 0)
  394.     THEN DO
  395.         Call BusyText(2, "%c%bsetting%n\n%cfontname and size%n")
  396.         Call BusyProgress(2, 60)
  397.         /* print the fontname and size */
  398.         d41 = d4 - (txtsize+1)
  399.         'DRAWTEXTOBJ 'd1 d41' INFRONT WINDOW "'oldwinname'"'
  400.          txtid = RESULT
  401.         'SELECTTEXT INOBJECT 'txtid' WINDOW "'oldwinname'"'
  402.  
  403.         'BEGINCOMMANDCAPTURE'
  404.          'SETTRACKTABLE NONE'
  405.          'SETLEADING RELATIVE 100%'
  406.          'SETTYPESIZE 'txtsize
  407.          'SETPARAGRAPHSTYLE "FontName"'
  408.         'ENDCOMMANDCAPTURE'
  409.  
  410.         sizetxt = Trunc( ffs_size * factor, 1 )
  411.         sizetxt = ' ['sizetxt||'pt ]'
  412.         'INSERT "'name||sizetxt'" WINDOW "'oldwinname'"'
  413.         'GETTEXTOBJ POSITION txtpos OBJECTID 'txtid' WINDOW "'oldwinname'"'
  414.          txtp2.left   = txtpos.left
  415.          txtp2.top    = txtpos.top
  416.          txtp2.bottom = txtpos.bottom
  417.          txtp2.right  = txtpos.right
  418.  
  419.         txtwidth = txtp2.right - txtp2.left
  420.         IF (txtwidth > (d3-d1))
  421.         THEN 'EDITTEXTOBJ POSITION 'txtp2.left' 'txtp2.top' 'd3' 'txtp2.bottom' OBJECTID 'txtid' WINDOW "'oldwinname'"'
  422.     END
  423.  
  424.     Call BusyText(2, "%c%bdrawing%n\n%cborder around sample%n")
  425.     Call BusyProgress(2, 80)
  426.  
  427.     /*
  428.     ** draw the border for the sample
  429.     */
  430.     IF (sbw > 0)
  431.     THEN DO
  432.         d11 = d1 + sbw/2
  433.         d21 = d2 + sbw/2
  434.         d31 = d3 - sbw/2
  435.         d41 = d4 - (txtsize+1) - sbw/2
  436.  
  437.         'DRAWBOX 'd11 d21 d31 d41' WINDOW "'oldwinname'"'
  438.          dummy = RESULT
  439.         'SETSTROKEWEIGHT 'sbw' OBJECTID 'dummy
  440.         'SETSTROKEJOIN BEVEL OBJECTID 'dummy
  441.     END
  442.     nppp = nppp + 1
  443. Return
  444. /* /// */
  445. /* /// BuildGUI()
  446. */
  447. BuildGUI:
  448.  
  449.     /*
  450.     ** Create the rxMUI GUI
  451.     ** --------------------
  452.     */
  453.  
  454.     /*
  455.     ** first of all the let's define the application object
  456.     */
  457.  
  458.     muiApp.Title       = pgsName
  459.     muiApp.Version     = "$VER: "|| pgsVersion ||' ('|| pgsDate ||')'
  460.     muiApp.Copyright   = pgsCopy
  461.     muiApp.Author      = pgsAuthor
  462.     muiApp.Description = "Create font catalogs within PageStream"
  463.     muiApp.Base        = pgsName
  464.     muiApp.diskobject  = pgsName
  465.     muiApp.ctrlc       = 1
  466.     muiApp.menustrip   = "muiMenuStrip"
  467.     muiApp.subwindow   = "muiWin"
  468.  
  469.     /*
  470.     ** let's define the window
  471.     */
  472.     muiWin.ID       = "MAIN"
  473.     muiWin.Title    = pgsName pgsVersion ||' ('|| pgsDate ||') - '|| pgsCopy
  474.     muiWin.Contents = "muiMainGroup"
  475.  
  476.     /*
  477.     ** define the menu
  478.     */
  479.     muiMenuStrip.0 = "muiMenuProject"
  480.         muiMenuProject.Title = "Project"
  481.         muiMenuProject.Class = "MENU"
  482.         muiMenuProject.0 = MenuItem("muiMenuAbout",     "About...",      "?")
  483.         muiMenuProject.1 = MenuItem("muiMenuAboutrxMUI","About RxMUI..."    )
  484.         muiMenuProject.2 = MenuItem("muiMenuAboutMUI",  "About MUI..."      )
  485.         muiMenuProject.3 = MenuItem("",                 "BAR"               )
  486.         muiMenuProject.4 = MenuItem("muiMenuQuit",      "Quit",          "Q")
  487.     muiMenuStrip.1 = "muiMenuPrefs"
  488.         muiMenuPrefs.Title = "Prefs"
  489.         muiMenuPrefs.Class = "MENU"
  490.         muiMenuPrefs.0 = MenuItem("muiMenuPrefsMUI",    "MUI...",        "M")
  491.         muiMenuPrefs.1 = MenuItem("",                    "BAR")
  492.         muiMenuPrefs.2 = MenuItem("muiMenuLoad",        "Load",            "L")
  493.         muiMenuPrefs.3 = MenuItem("muiMenuSave",        "Save",            "S")
  494.         muiMenuPrefs.4 = MenuItem("muiMenuSaveAs",        "Save As...",    "A")
  495.     res = NewObj("MENUSTRIP", "muiMenuStrip")
  496.     IF (res ~= 0)
  497.     THEN Call Err(res)
  498.  
  499.     /*
  500.     ** let's define the window contents
  501.     */
  502.  
  503.     tab = 0
  504.  
  505.     muiMainGroup.0            = "muiGroup0"
  506.         muiGroup0.Class            = "GROUP"
  507.         muiGroup0.Frame            = "GROUP"
  508.         muiGroup0.Horiz            = 0
  509.         muiGroup0.0                = "muiGroup00"
  510.             muiGroup00.Class        = "GROUP"
  511.             muiGroup00.Horiz        = 1
  512.             muiGroup00.Frame        = "GROUP"
  513.             muiGroup00.Background    = "FILLBACK"
  514.             muiGroup00.0            = HSpace()
  515.             muiGroup00.1            = "muiBITMAP"
  516.                 muiBITMAP.Class        = "BITMAP"
  517.                 muiBITMAP.Precision    = "ICON"
  518.                 muiBITMAP.File        = pgsPic
  519.                 muiBITMAP.InputMode    = "RelVerify"
  520.                 muiBITMAP.Frame        = "BUTTON"
  521.             muiGroup00.2            = Label(ParseText('%c%b%8'|| pgsName pgsVersion ||'%n\n'|| pgsCopy))
  522.             muiGroup00.3            = HSpace()
  523.         muiGroup0.1               = "muiGroupPage00"
  524.             muiGroupPage00.Class    = "GROUP"
  525.             muiGroupPage00.Horiz    = 1
  526.             muiGroupPage00.0        = "muiPagerList"
  527.                 muiPagerList.Class            = "NLISTVIEW"
  528.                 muiPagerList.List            = "pagerList"
  529.                 muiPagerList.Weight            = 20
  530.                     pagerList.Class            = "NLIST"
  531.                     pagerList.List            = "pagerList"
  532.                     pagerList.0                = "Page"
  533.                     pagerList.1                = "Samples"
  534.                     pagerList.2                = "Printer/Files"
  535.                     pagerList.3                = "Fonts"
  536.             muiGroupPage00.1        =  MakeObj(,"Balance",)
  537.             muiGroupPage00.2        = "muiPager"
  538.                 muiPager.Class            = "GROUP"
  539.                 muiPager.Weight            = 50
  540.                 muiPager.PageMode        = 1
  541.                 /*---------------------------------------------*/
  542.                 muiPager.tab                = "muiTabPage"; tab = tab + 1
  543.                     muiTabPage.Class            = "GROUP"
  544.                     muiTabPage.0                = VSpace()
  545.                     muiTabPage.1                = "muiTabPage0"
  546.                         muiTabPage0.Class            = "GROUP"
  547.                         muiTabPage0.Frame            = "GROUP"
  548.                         muiTabPage0.FrameTitle        = "FontCatalog sizes"
  549.                         muiTabPage0.Background        = "BACKGROUND"
  550.                         muiTabPage0.Horiz            = 1
  551.                         muiTabPage0.0                = "muiTabPage00"
  552.                             muiTabPage00.Class            = "GROUP"
  553.                             muiTabPage00.Columns        = 4
  554.                             muiTabPage00.0                = Label("Top")
  555.                             muiTabPage00.1                = String("g_top")
  556.                             muiTabPage00.2                = Label("Left")
  557.                             muiTabPage00.3                = String("g_left")
  558.                             muiTabPage00.4                = Label("Bottom")
  559.                             muiTabPage00.5                = String("g_bottom")
  560.                             muiTabPage00.6                = Label("Right")
  561.                             muiTabPage00.7                = String("g_right")
  562.                         muiTabPage0.1                = Button("g_grabMP", "grab MP")
  563.                     muiTabPage.2                = VSpace(10)
  564.                     muiTabPage.3                = "muiTabPage1"
  565.                         muiTabPage1.Class            = "GROUP"
  566.                         muiTabPage1.Frame            = "GROUP"
  567.                         muiTabPage1.FrameTitle        = "Page"
  568.                         muiTabPage1.Background        = "BACKGROUND"
  569.                         muiTabPage1.Horiz            = 1
  570.                         muiTabPage1.0                = Label("page border width")
  571.                         muiTabPage1.1                = String("g_pbw")
  572.                         muiTabPage1.2                = Label("text size")
  573.                         muiTabPage1.3                = String("g_lsize")
  574.                     muiTabPage.4                = VSpace()
  575.                 /*---------------------------------------------*/
  576.                 muiPager.tab                = "muiTabSample"; tab = tab + 1
  577.                     muiTabSample.Class            = "GROUP"
  578.                     muiTabSample.0                = "muiTabSample0"
  579.                         muiTabSample0.Class            = "GROUP"
  580.                         muiTabSample0.Frame            = "GROUP"
  581.                         muiTabSample0.FrameTitle    = "Sample sizes"
  582.                         muiTabSample0.Background    = "BACKGROUND"
  583.                         muiTabSample0.0                = "G_FFSIZE"
  584.                             g_ffsize.Class               = "CYCLE"
  585.                             g_ffsize.Entries             = "variable size|fixed size"
  586.                             g_ffsize.Selected            = 0
  587.                         muiTabSample0.1                = "muiTabSample00"
  588.                             muiTabSample00.Class        = "GROUP"
  589.                             muiTabSample00.Horiz        = 1
  590.                             muiTabSample00.0            = "muiTabSample000"
  591.                                 muiTabSample000.Class        = "GROUP"
  592.                                 muiTabSample000.0            = "muiTabSample000T0"
  593.                                     muiTabSample000T0.Class        = "TEXT"
  594.                                     muiTabSample000T0.Contents    = ParseText('%c%8Number of fonts per page%n')
  595.                                 muiTabSample000.1            = "muiTabSample0000"
  596.                                     muiTabSample0000.Class        = "GROUP"
  597.                                     muiTabSample0000.Columns    = 2
  598.                                     muiTabSample0000.0            = Label(ParseText('#x:'))
  599.                                     muiTabSample0000.1            = "G_X_NUM"
  600.                                         g_x_num.Class                = "SLIDER"
  601.                                         g_x_num.Min                    = 1
  602.                                         g_x_num.Max                    = 40
  603.                                         g_x_num.Level                = 1
  604.                                     muiTabSample0000.2            = Label(ParseText('#y:'))
  605.                                     muiTabSample0000.3            = "G_Y_NUM"
  606.                                         g_y_num.Class                = "SLIDER"
  607.                                         g_y_num.Min                    = 1
  608.                                         g_y_num.Max                    = 40
  609.                                         g_y_num.Level                = 1
  610.                             muiTabSample00.1            = "muiTabSample001"
  611.                                 muiTabSample001.Class        = "GROUP"
  612.                                 muiTabSample001.Disabled    = 1
  613.                                 muiTabSample001.0            = "muiTabSample001T0"
  614.                                     muiTabSample001T0.Class        = "TEXT"
  615.                                     muiTabSample001T0.Contents    = ParseText('%c%8Fixed fontsize%n')
  616.                                 muiTabSample001.1            = String("g_f_size")
  617.                         muiTabSample0.2                = "muiTabSample01"
  618.                             muiTabSample01.Class        = "GROUP"
  619.                             muiTabSample01.Horiz         = 1
  620.                             muiTabSample01.0            = Checkmark(g_vertical)
  621.                             muiTabSample01.1            = Label(ParseText('vertical mode'))
  622.                             muiTabSample01.2            = HSpace()
  623.                         muiTabPage.5                = VSpace()
  624.                     muiTabSample.1                = VSpace(10)
  625.                     muiTabSample.2                = "muiTabSample1"
  626.                         muiTabSample1.Class            = "GROUP"
  627.                         muiTabSample1.Frame            = "GROUP"
  628.                         muiTabSample1.FrameTitle    = "Thumbnail"
  629.                         muiTabSample1.Background    = "BACKGROUND"
  630.                         muiTabSample1.0                = "muiTabSample10"
  631.                             muiTabSample10.Class        = "GROUP"
  632.                             muiTabSample10.Columns        = 4
  633.                             muiTabSample10.0            = Label("border width")
  634.                             muiTabSample10.1            = String("g_sbw")
  635.                             muiTabSample10.2            = Label("inner space")
  636.                             muiTabSample10.3            = String("g_thumbSpace")
  637.                             muiTabSample10.4            = Label("gap")
  638.                             muiTabSample10.5            = String("g_gap")
  639.                             muiTabSample10.6            = Label("font size")
  640.                             muiTabSample10.7            = String("g_font")
  641.                         muiTabSample1.1                = "muiTabSample11"
  642.                             muiTabSample11.Class        = "GROUP"
  643.                             muiTabSample11.Horiz        = 0
  644.                             muiTabSample11.0            = "G_PRINTWHAT"
  645.                                 g_printwhat.Class           = "CYCLE"
  646.                                 g_printwhat.Entries         = "user defined ->|print all chars|use textfile"
  647.                                 g_printwhat.Selected        = 0
  648.                             muiTabSample11.1            = "muiTabSample111"
  649.                                 muiTabSample111.Class        = "GROUP"
  650.                                 muiTabSample111.Frame        = "GROUP"
  651.                                 muiTabSample111.FrameTitle    = "sample text"
  652.                                 muiTabSample111.0             = "g_fSampleCycle"
  653.                                     g_fSampleCycle.Class        = "CYCLE"
  654.                                     g_fSampleCycle.Entries        = "%FONTNAME/%FN - name of current font"
  655.                                 muiTabSample111.1            = "g_fSample"
  656.                                     g_fSample.Class                = "TEXTINPUTSCROLL"
  657.                                     g_fSample.Frame                = "STRING"
  658.                                     g_fSample.MultiLine            = 1
  659.                                     g_fSample.MaxLen            = 2
  660.                                     g_fSample.MaxLines            = 2
  661.                                     g_fSample.Lines                = 1
  662.                                     g_fSample.Style                = "MUI"
  663.                                     g_fSample.Contents            = ParseText("\%FONTNAME\nabc\nABC")
  664.                                     g_fSample.Editable            = 1
  665.                 /*---------------------------------------------*/
  666.                 muiPager.tab            = "muiTabFile"; tab = tab + 1
  667.                     muiTabFile.Class        = "GROUP"
  668.                     muiTabFile.Columns        = 2
  669.                     muiTabFile.0            = HSpace(1)
  670.                     muiTabFile.1            = VSpace()
  671.                     muiTabFile.2            = Label("output scale")
  672.                     muiTabFile.3            = "G_SCALE"
  673.                         g_scale.Class           = "CYCLE"
  674.                         g_scale.ControlChar        = "s"
  675.                         g_scale.Entries         = "actual size|scaled to fit"
  676.                         g_scale.Selected        = 0
  677.                     muiTabFile.4            = HSpace(1)
  678.                     muiTabFile.5            = VSpace(5)
  679.                     muiTabFile.6            = Label("filename for saving")
  680.                     muiTabFile.7            = "G_SDIRASL"
  681.                         g_sdirasl.Class           = "POPASL"
  682.                         g_sdirasl.Type            = "FILE"
  683.                         g_sdirasl.Title            = "FILE loading..."
  684.                         g_sdirasl.PositiveText    = "load..."
  685.                         g_sdirasl.NegativeText    = "cancel..."
  686.                         g_sdirasl.RejectIcons    = 1
  687.                         g_sdirasl.String        = String("g_sdir")
  688.                     muiTabFile.8            = HSpace(1)
  689.                     muiTabFile.9            = VSpace(5)
  690.                     muiTabFile.10            = Label("textfile for fontsamples")
  691.                     muiTabFile.11            = "G_STEXTASL"
  692.                         g_stextasl.Class        = "POPASL"
  693.                         g_stextasl.Type            = "FILE"
  694.                         g_stextasl.Title        = "FILE loading..."
  695.                         g_stextasl.PositiveText    = "load..."
  696.                         g_stextasl.NegativeText    = "cancel..."
  697.                         g_stextasl.RejectIcons    = 1
  698.                         g_stextasl.String        = String("g_stext")
  699.                     muiTabFile.12            = HSpace(1)
  700.                     muiTabFile.13            = VSpace()
  701.                 /*---------------------------------------------*/
  702.                 muiPager.tab            = "muiTabFont"; tab = tab + 1
  703.                     muiTabFont.Class        = "GROUP"
  704.                     muiTabFont.Columns        = 2
  705.                     muiTabFont.0            = "availText"
  706.                         availText.Class            = "TEXT"
  707.                         availText.Contents        = "Hallo"
  708.                     muiTabFont.1            = "selectText"
  709.                         selectText.Class        = "TEXT"
  710.                         selectText.Contents        = "Hallo"
  711.                     muiTabFont.2            = "muiTabFontNL0"
  712.                         muiTabFontNL0.Class        = "NLISTVIEW"
  713.                         muiTabFontNL0.List        = "G_AVAIL"
  714.                             g_avail.Class            = "NLIST"
  715.                             g_avail.AdjustHeight    = 1
  716.                             g_avail.MultiSelect        = "DEFAULT"
  717.                             g_avail.Title            = ParseText('%cfonts available%n')
  718.                             g_avail.TitleClick        = 1
  719.                             g_avail.DragType        = "DEFAULT"
  720.                             g_avail.DragSortable    = 1
  721.                             g_avail.ShowDropMark    = 1
  722.                             g_avail.DropMark        = 1
  723.                     muiTabFont.3            = "muiTabFontNL1"
  724.                         muiTabFontNL1.Class        = "NLISTVIEW"
  725.                         muiTabFontNL1.List        = "G_SELECT"
  726.                             g_select.Class            = "NLIST"
  727.                             g_select.AdjustHeight    = 1
  728.                             g_select.MultiSelect    = "DEFAULT"
  729.                             g_select.Title            = ParseText('%cprintlist%n')
  730.                             g_select.TitleClick        = 2
  731.                             g_select.DragType        = "DEFAULT"
  732.                             g_select.DragSortable    = 1
  733.                             g_select.ShowDropMark    = 1
  734.                     muiTabFont.4            = Button("g_AvailAll","Select all")
  735.                     muiTabFont.5            = Button("g_SelectAll","Select all")
  736.     muiMainGroup.1            = "G_ACTION"
  737.         g_action.Class           = "CYCLE"
  738.         g_action.ControlChar    = "a"
  739.         g_action.Entries         = "collect|print|save"
  740.         g_action.Selected        = 0
  741.     muiMainGroup.2            = "muiButtonGroup"
  742.         muiButtonGroup.Class    = "GROUP"
  743.         muiButtonGroup.Columns    = 2
  744.         muiButtonGroup.0        = Button("G_OK",     "_Ok"    )
  745.         muiButtonGroup.1        = Button("G_CANCEL", "_Cancel")
  746.  
  747.     /*
  748.     ** create all
  749.     */
  750.     Call NewObj("APPLICATION","muiApp")
  751.  
  752.     /*
  753.     ** window close gadget means quit...
  754.     */
  755.     Call Notify("muiWin", "CLOSEREQUEST", 1, "muiApp", "RETURNID", "QUIT")
  756.  
  757.     /*
  758.     ** Cycles
  759.     */
  760.     Call Notify("G_FFSIZE", "ACTIVE", 0, "muiTabSample001", "SET", "DISABLED", 1)
  761.     Call Notify("G_FFSIZE", "ACTIVE", 0, "muiTabSample000", "SET", "DISABLED", 0)
  762.     Call Notify("G_FFSIZE", "ACTIVE", 1, "muiTabSample001", "SET", "DISABLED", 0)
  763.     Call Notify("G_FFSIZE", "ACTIVE", 1, "muiTabSample000", "SET", "DISABLED", 1)
  764.     
  765.     Call Notify("G_PRINTWHAT", "ACTIVE", 0, "muiTabSample111", "SET", "DISABLED", 0)
  766.     Call Notify("G_PRINTWHAT", "ACTIVE", 1, "muiTabSample111", "SET", "DISABLED", 1)
  767.     Call Notify("G_PRINTWHAT", "ACTIVE", 2, "muiTabSample111", "SET", "DISABLED", 1)
  768.  
  769.     /*
  770.     ** Ok and Cancel Buttons...
  771.     */
  772.     Call Notify("G_CANCEL", "PRESSED", 0, "muiApp", "RETURNID")
  773.     Call Notify("G_OK",     "PRESSED", 0, "muiApp", "RETURNID")
  774.     Call Notify("G_GRABMP", "PRESSED", 0, "muiApp", "RETURNID")
  775.  
  776.     /*
  777.     ** Menu events...
  778.     */
  779.     Call Notify("muiMenuLoad",      "MENUTRIGGER", "EVERYTIME", "muiApp", "RETURNID")
  780.     Call Notify("muiMenuSave",      "MENUTRIGGER", "EVERYTIME", "muiApp", "RETURNID")
  781.     Call Notify("muiMenuSaveAs",    "MENUTRIGGER", "EVERYTIME", "muiApp", "RETURNID")
  782.     Call Notify("muiMenuPrefsMUI",    "MENUTRIGGER", "EVERYTIME", "muiApp", "OpenConfigWindow")
  783.     Call Notify("muiMenuAbout",     "MENUTRIGGER", "EVERYTIME", "muiApp", "ABOUT",      "muiWin")
  784.     Call Notify("muiMenuAboutrxMUI","MENUTRIGGER", "EVERYTIME", "muiApp", "ABOUTRXMUI", "muiWin")
  785.     Call Notify("muiMenuAboutMUI",  "MENUTRIGGER", "EVERYTIME", "muiApp", "ABOUTMUI",   "muiWin")
  786.     Call Notify("muiMenuQuit",      "MENUTRIGGER", "EVERYTIME", "muiApp", "RETURNID")
  787.  
  788.     /*
  789.     ** Button click -> about
  790.     */
  791.     Call Notify("muiBitmap", "PRESSED", 0, "muiApp", "ABOUT", "muiWin")
  792.  
  793.     /*
  794.     ** Drag'n'Drop for the lists
  795.     */
  796.     Call DandD("g_avail",    "g_select",    "AUTO REMOVE")
  797.     Call DandD("g_select",    "g_avail",    "AUTO REMOVE")
  798.  
  799.     /*
  800.     ** Sort lists on title click
  801.     */
  802.     Call Notify("g_avail",    "titleclick", "everytime", "g_avail",    "sort2", "triggervalue", "add2values")
  803.     Call Notify("g_select",    "titleclick", "everytime", "g_select",    "sort2", "triggervalue", "add2values")
  804.  
  805.     Call Notify("g_avail",    "ACTIVE", "EVERYTIME", "muiApp", "RETURNID")
  806.     Call Notify("g_select",    "ACTIVE", "EVERYTIME", "muiApp", "RETURNID")
  807.  
  808.     /*
  809.     ** Select all button
  810.     */
  811.     Call Notify("g_availAll",    "PRESSED", 0, "g_avail",    "Select", "All", "On")
  812.     Call Notify("g_selectAll",    "PRESSED", 0, "g_select",    "Select", "All", "On")
  813.  
  814.     Call Notify("muiPagerList", "ACTIVE", "EVERYTIME", "muiPager", "SET", "ACTIVEPAGE", "TRIGGERVALUE")
  815.  
  816.     /*
  817.     ** Set active gadget at start
  818.     */
  819.     Call Set("muiWin", "ActiveObject", "G_OK")
  820.     Call set("muiPagerList", "ACTIVE", 0)
  821.  
  822.     /*
  823.     ** Set all the Cycle chains (here, because it will not work above!)
  824.     */
  825.     Call Set("muiPager",        "CYCLECHAIN", 1)
  826.  
  827.     Call Set("g_top",            "CYCLECHAIN", 1)
  828.     Call Set("g_left",            "CYCLECHAIN", 1)
  829.     Call Set("g_bottom",        "CYCLECHAIN", 1)
  830.     Call Set("g_right",            "CYCLECHAIN", 1)
  831.     Call Set("g_grabMP",        "CYCLECHAIN", 1)
  832.     Call Set("g_pbw",            "CYCLECHAIN", 1)
  833.     Call Set("g_lsize",            "CYCLECHAIN", 1)
  834.     
  835.     Call Set("g_ffsize",        "CYCLECHAIN", 1)
  836.     Call Set("g_x_num",            "CYCLECHAIN", 1)
  837.     Call Set("g_y_num",            "CYCLECHAIN", 1)
  838.     Call Set("g_f_size",        "CYCLECHAIN", 1)
  839.     Call Set("g_vertical",        "CYCLECHAIN", 1)
  840.     Call Set("g_sbw",            "CYCLECHAIN", 1)
  841.     Call Set("g_thumbSpace",    "CYCLECHAIN", 1)
  842.     Call Set("g_gap",            "CYCLECHAIN", 1)
  843.     Call Set("g_font",            "CYCLECHAIN", 1)
  844.     Call Set("g_printwhat",        "CYCLECHAIN", 1)
  845.     Call Set("g_fsample",        "CYCLECHAIN", 1)
  846.     Call Set("g_scale",            "CYCLECHAIN", 1)
  847.     Call Set("g_sdir",            "CYCLECHAIN", 1)
  848.     Call Set("g_stext",            "CYCLECHAIN", 1)
  849.     Call Set("g_avail",            "CYCLECHAIN", 1)
  850.     Call Set("g_select",        "CYCLECHAIN", 1)
  851.     Call Set("g_availAll",        "CYCLECHAIN", 1)
  852.     Call Set("g_selectAll",        "CYCLECHAIN", 1)
  853.     Call Set("g_ok",            "CYCLECHAIN", 1)
  854.     Call Set("g_cancel",        "CYCLECHAIN", 1)
  855.     Call Set("g_action",        "CYCLECHAIN", 1)
  856.  
  857.     /*
  858.     ** Set all the short help texts
  859.     */
  860.     Call Set("g_top",                "SHORTHELP", ParseText("Top side of the page"))
  861.     Call Set("g_left",                "SHORTHELP", ParseText("Left side of the page"))
  862.     Call Set("g_right",                "SHORTHELP", ParseText("Right side of the page"))
  863.     Call Set("g_bottom",            "SHORTHELP", ParseText("Bottom side of the page"))
  864.     Call Set("g_grabMP",            "SHORTHELP", ParseText("Get sizes from current MasterPage"))
  865.     Call Set("g_pbw",                "SHORTHELP", ParseText("Weight of page border."))
  866.     Call Set("g_lsize",                "SHORTHELP", ParseText("Size for text on bottom of the page."))
  867.  
  868.     Call Set("g_ffsize",            "SHORTHELP", ParseText("Select a maximum size for the fontsamples\nor the fontsize"))
  869.     Call Set("g_x_num",                "SHORTHELP", ParseText("Number of OverViews per row"))
  870.     Call Set("g_y_num",                "SHORTHELP", ParseText("Number of OverViews per column"))
  871.     Call Set("g_f_size",            "SHORTHELP", ParseText("Maximum fontsize for one sample"))
  872.     Call Set("g_vertical",            "SHORTHELP", ParseText("Place samples vertically instead of horizontally"))
  873.     Call Set("g_sbw",                "SHORTHELP", ParseText("Weight of thumbnail border"))
  874.     Call Set("g_thumbSpace",        "SHORTHELP", ParseText("Space between sample text and border"))
  875.     Call Set("g_gap",                "SHORTHELP", ParseText("Gap between the thumbnails (horizontal AND vertical)"))
  876.     Call Set("g_font",                "SHORTHELP", ParseText("Size for the font names below the thumbnails.\nA textstyle called %bFontName%n will be used!"))
  877.     Call Set("g_fsample",            "SHORTHELP", ParseText("Sample to print for every font.\nYou can use %b*n%n as newline character\nand %b*t%n as tab character."))
  878.     Call Set("g_printWhat",            "SHORTHELP", ParseText("Use this text, try to print all characters\nor use an external file for samples."))
  879.  
  880.     Call Set("g_scale",                "SHORTHELP", ParseText("Scaled to fit or actual size output when selected %bprint%n."))
  881.     Call Set("g_sdir",                "SHORTHELP", ParseText("Filename for the Catalog (when selected %bsave%n)."))
  882.     Call Set("g_stext",                "SHORTHELP", ParseText("Textfile for the sample text (when selected %buse textfile%n).\nThis can be a pure ascii file or a textfile exported with PageStream3 styles!"))
  883.  
  884.     Call Set("g_avail",                "SHORTHELP", ParseText("All available fonts (not selected)."))
  885.     Call Set("g_select",            "SHORTHELP", ParseText("These fonts will be printed."))
  886.  
  887.     Call Set("g_action",            "SHORTHELP", ParseText("Collect, save or print the Catalog"))
  888.     Call Set("g_ok",                "SHORTHELP", ParseText("Start the Catalog generation"))
  889.     Call Set("g_cancel",            "SHORTHELP", ParseText("Leave program"))
  890.  
  891. Return
  892. /* /// */
  893. /* /// BusyClose()
  894. */
  895. BusyClose:
  896.     IF (muiBusyWinOpen = TRUE)
  897.     THEN DO
  898.         Call GetAttr("muiBusyWin", "OPEN", "o")
  899.         IF (o ~= 0)
  900.         THEN Call Set("muiBusyWin", "OPEN", 0)
  901.         Call Dispose("muiBusyWin")
  902.         muiBusyWinOpen = FALSE
  903.     END
  904. Return
  905. /* /// */
  906. /* /// BusyHandle(bAnz, current1, current2, current3)
  907. */
  908. BusyHandle: PROCEDURE
  909.     /*
  910.     ** Handle the mui busy window for font loading...
  911.     */
  912.     PARSE ARG bAnz,current1,current2,current3
  913.  
  914.     IF (bAnz >= 1) THEN Call GetAttr("muiBusyGauge1", "MAX", max1)
  915.     IF (bAnz >= 2) THEN Call GetAttr("muiBusyGauge2", "MAX", max2)
  916.     IF (bAnz >= 3) THEN Call GetAttr("muiBusyGauge3", "MAX", max3)
  917.  
  918.     IF ((bAnz >= 1) & (current1 >= 0)) THEN Call BusyProgress(1, current1)
  919.     IF ((bAnz >= 2) & (current2 >= 0)) THEN Call BusyProgress(2, current2)
  920.     IF ((bAnz >= 3) & (current3 >= 0)) THEN Call BusyProgress(3, current3)
  921.  
  922.     /*
  923.     ** this is the standard cycle to handle an application
  924.     */
  925.     ctrl_C = 2**12
  926.     s = 0
  927.     Call Handle("muiApp", "H", s)
  928.     DO i = 0 TO (H.num - 1)
  929.         id = H.i
  930.         SELECT
  931.             WHEN (id = "BUSY_CANCEL")
  932.             THEN DO
  933.                 userCancel = 1
  934.             END
  935.         END
  936.     END
  937.     s = Wait( OR(h.signals, ctrl_C) )
  938.     IF (AND(s, ctrl_C) ~= 0)
  939.     THEN userCancel = 1
  940. Return userCancel
  941. /* /// */
  942. /* /// BusyOpen(title, bAnz, text1, text2, text3, total1, total2, total3)
  943. */
  944. BusyOpen:
  945.     /*
  946.     ** Open a MUI busy requester with a maximum of 3 sliders (should be enough)
  947.     */
  948.     userCancel = 0
  949.     PARSE ARG title,bAnz,text1,text2,text3,total1,total2,total3
  950.  
  951.     /*
  952.     ** let's define the window
  953.     */
  954.  
  955.     muiBusyWin.ID          = "BUSY"
  956.     muiBusyWin.Title       = ParseText(title)
  957.     muiBusyWin.Contents    = "muiBusyGroup"
  958.  
  959.     /*
  960.     ** let's define the window contents
  961.     ** (simply 3 versions... how lazy!)
  962.     */
  963.  
  964.     muiBusyGroup.0 = "muiBusyGroup0"
  965.         muiBusyGroup0.Class         = "GROUP"
  966.         muiBusyGroup0.Frame         = "GROUP"
  967.         muiBusyGroup0.Horiz         = 0
  968.         muiBusyGroup0.0             = "muiBusyText1"
  969.             muiBusyText1.Class            = "TEXT"
  970.             muiBusyText1.Contents        = ParseText(text1)
  971.         muiBusyGroup0.1                = "muiBusyGauge1"
  972.             muiBusyGauge1.Class            = "GAUGE"
  973.             muiBusyGauge1.Frame            = "GAUGE"
  974.             muiBusyGauge1.Horiz            = 1
  975.             muiBusyGauge1.InfoText      = ""
  976.             muiBusyGauge1.Max           = total1
  977.             muiBusyGauge1.Current       = 0
  978.             muiBusyGauge1.FixHeightTxt     = 1
  979.     IF (bAnz >= 2)
  980.     THEN DO
  981.         muiBusyGroup0.2             = "muiBusyText2"
  982.             muiBusyText2.Class            = "TEXT"
  983.             muiBusyText2.Contents        = ParseText(text2)
  984.         muiBusyGroup0.3                = "muiBusyGauge2"
  985.             muiBusyGauge2.Class            = "GAUGE"
  986.             muiBusyGauge2.Frame            = "GAUGE"
  987.             muiBusyGauge2.Horiz            = 1
  988.             muiBusyGauge2.InfoText      = ""
  989.             muiBusyGauge2.Max           = total2
  990.             muiBusyGauge2.Current       = 0
  991.             muiBusyGauge2.FixHeightTxt     = 1
  992.     END
  993.     IF (bAnz = 3)
  994.     THEN DO
  995.         muiBusyGroup0.4             = "muiBusyText3"
  996.             muiBusyText3.Class            = "TEXT"
  997.             muiBusyText3.Contents        = ParseText(text3)
  998.         muiBusyGroup0.5                = "muiBusyGauge3"
  999.             muiBusyGauge3.Class            = "GAUGE"
  1000.             muiBusyGauge3.Frame            = "GAUGE"
  1001.             muiBusyGauge3.Horiz            = 1
  1002.             muiBusyGauge3.InfoText      = ""
  1003.             muiBusyGauge3.Max           = total3
  1004.             muiBusyGauge3.Current       = 0
  1005.             muiBusyGauge3.FixHeightTxt     = 1
  1006.     END
  1007.  
  1008.     IF (bAnz = 1)
  1009.     THEN DO
  1010.         muiBusyGroup0.2               = HBar()
  1011.         muiBusyGroup0.3               = Button("BUSY_CANCEL", "_Cancel")
  1012.     END
  1013.     ELSE IF (bAnz = 2)
  1014.     THEN DO
  1015.         muiBusyGroup0.4               = HBar()
  1016.         muiBusyGroup0.5               = Button("BUSY_CANCEL", "_Cancel")
  1017.     END
  1018.     ELSE IF (bAnz = 3)
  1019.     THEN DO
  1020.         muiBusyGroup0.6               = HBar()
  1021.         muiBusyGroup0.7               = Button("BUSY_CANCEL", "_Cancel")
  1022.     END
  1023.  
  1024.     /*
  1025.     ** Busy Cancel Button...
  1026.     */
  1027.     Call Notify("BUSY_CANCEL", "PRESSED", 0, "muiApp", "SETVAR", "userCancel")
  1028.  
  1029.     /*
  1030.     ** generate new window object
  1031.     */
  1032.     res = NewObj("WINDOW","muiBusyWin",,1)
  1033.     IF (res ~= 0)
  1034.     THEN Call err(res)
  1035.     muiBusyWinOpen = TRUE
  1036.  
  1037.     /*
  1038.     ** Set active gadget at start
  1039.     */
  1040.     Call Set("muiBusyWin", "ActiveObject", "BUSY_CANCEL")
  1041.  
  1042.     /*
  1043.     ** to let the window be a bit larger....
  1044.     */
  1045.     Call Set("muiBusyGauge1", "INFOTEXT", ".............................................................................")
  1046.  
  1047.     /*
  1048.     ** Add window to application
  1049.     */
  1050.     Call Add("muiApp", "muiBusyWin")
  1051.  
  1052.     Call Set("muiBusyWin", "OPEN", 1)
  1053.     Call GetAttr("muiBusyWin", "OPEN", "o")
  1054.     IF (o = 0)
  1055.     THEN DO
  1056.         Say "can't open busy window!"
  1057.         Call ShowRequester("Can't open busy window! -> Exiting", "Sorry...")
  1058.         Call CleanUp
  1059.     END
  1060. Return 1
  1061. /* /// */
  1062. /* /// BusyProgress(nr, current)
  1063. */
  1064. BusyProgress: PROCEDURE
  1065.     /*
  1066.     ** Set a new progress
  1067.     */
  1068.     PARSE ARG nr,current
  1069.  
  1070.     IF (nr = 1)
  1071.     THEN DO
  1072.         Call GetAttr("muiBusyGauge1", "MAX", max)
  1073.         Call Set("muiBusyGauge1", "CURRENT", Trunc(current))
  1074.         Call Set("muiBusyGauge1", "INFOTEXT", Trunc(100*current/max) ||"%")
  1075.     END
  1076.     ELSE IF (nr = 2)
  1077.     THEN DO
  1078.         Call GetAttr("muiBusyGauge2", "MAX", max)
  1079.         Call Set("muiBusyGauge2", "CURRENT", Trunc(current))
  1080.         Call Set("muiBusyGauge2", "INFOTEXT", Trunc(100*current/max) ||"%")
  1081.     END
  1082.     ELSE IF (nr = 3)
  1083.     THEN DO
  1084.         Call GetAttr("muiBusyGauge3", "MAX", max)
  1085.         Call Set("muiBusyGauge3", "CURRENT", Trunc(current))
  1086.         Call Set("muiBusyGauge3", "INFOTEXT", Trunc(100*current/max) ||"%")
  1087.     END
  1088. Return userCancel
  1089. /* /// */
  1090. /* /// BusyText(nr, text)
  1091. */
  1092. BusyText:
  1093.     /*
  1094.     ** Set a new text for one gauge in the busy requester
  1095.     */
  1096.     PARSE ARG nr,text
  1097.  
  1098.     IF (nr = 1) THEN Call Set("muiBusyText1", "CONTENTS", ParseText(text))
  1099.     IF (nr = 2) THEN Call Set("muiBusyText2", "CONTENTS", ParseText(text))
  1100.     IF (nr = 3) THEN Call Set("muiBusyText3", "CONTENTS", ParseText(text)
  1101. Return
  1102. /* /// */
  1103. /* /// CheckPrefsVersion(fileName)
  1104. */
  1105. CheckPrefsVersion:
  1106.     /*
  1107.     ** Check if prefsfile is compatible
  1108.     ** --------------------------------
  1109.     */
  1110.  
  1111.     PARSE ARG fileName
  1112.  
  1113.     IF (fileName = "")
  1114.     THEN fileName = standardPrefs
  1115.  
  1116.     ok = Open('Prefs', fileName, 'R')
  1117.     IF (ok = 1)
  1118.     THEN DO
  1119.         dummy = ReadLn('Prefs')
  1120.         cl = Close('Prefs')
  1121.  
  1122.         IF ( (Left(dummy, Length(pgsName)) = pgsName) | (Left(dummy, 3) = 'FSP') ) & (Right(dummy,4) >= pgsLVer)
  1123.         THEN Return 0
  1124.     END
  1125. RETURN 1
  1126. /* /// */
  1127. /* /// CheckRoutines()
  1128. */
  1129. CheckRoutines:
  1130.     ADDRESS "PAGESTREAM"
  1131.  
  1132.     'CURRENTWINDOWPATH'
  1133.      oldWinName = RESULT
  1134.  
  1135.     'GETPAGEMASTERPAGE MASTERPAGE mname WINDOW "'oldwinname'"'
  1136.     IF (RC = 10)
  1137.     THEN DO
  1138.         Call ShowRequester('Please open a new Document first.')
  1139.         ADDRESS PAGESTREAM 'LOCKINTERFACE FALSE'
  1140.         Call CleanUp()
  1141.         EXIT
  1142.     END
  1143.  
  1144.     'CURRENTPAGE WINDOW "'oldwinname'"'
  1145.      pagenumber = RESULT
  1146.  
  1147.     IF ((pageNumber < 1) | (pageNumber > 999999))
  1148.     THEN DO
  1149.         /* maybe the user started from the masterpage?? */
  1150.         Call ShowRequester('Please go to a valid page and start again!')
  1151.         ADDRESS PAGESTREAM 'LOCKINTERFACE FALSE'
  1152.         Call CleanUp()
  1153.         EXIT
  1154.     END
  1155. Return
  1156. /* /// */
  1157. /* /// CleanUp()
  1158. */
  1159. CleanUp:
  1160.     ADDRESS PAGESTREAM
  1161.     /*
  1162.     ** Close busy requester, clean up and leave program
  1163.     ** ------------------------------------------------
  1164.     */
  1165.  
  1166.     IF (muiBusyWinOpen = TRUE)
  1167.     THEN DO
  1168.         Call BusyClose()
  1169.     END
  1170.  
  1171.     /*
  1172.     ** reset the measurementsystem to the saved one!!
  1173.     */
  1174.     ''defmeasure''
  1175.  
  1176.     'REFRESH ON'
  1177.     'REFRESHWINDOW WINDOW "'|| oldWinName ||'"'
  1178.     'LOCKINTERFACE FALSE'
  1179. EXIT
  1180. /* /// */
  1181. /* /// ConvertRawText2rxMUI(rawText)
  1182. */
  1183. ConvertText2hex:
  1184.     PARSE ARG rawText
  1185.  
  1186.     rawHex  = c2x(rawText)
  1187.     rawHex2 = ''
  1188.     DO k = 1 TO Length(rawHex)
  1189.         char = SubStr(rawHex, k, 2)
  1190.         SELECT
  1191.             /* line feed */
  1192.             WHEN char = '0A'
  1193.             THEN DO
  1194.                 rawHex2 = rawHex2 || c2x('\n')
  1195.             END
  1196.             /* percent */
  1197.             WHEN char = '25'
  1198.             THEN DO
  1199.                 rawHex2 = rawHex2 || c2x('\%')
  1200.             END
  1201.             OTHERWISE rawHex2 = rawHex2 || char
  1202.         END
  1203.         k = k + 1
  1204.     END
  1205. Return rawHex2
  1206. /* /// */
  1207. /* /// ConvertTextToMultipleLines(src)
  1208. */
  1209. ConvertTextToMultipleLines:
  1210.     PARSE ARG src
  1211.  
  1212.     _num      = 1
  1213.     _dest.num = _num
  1214.     _dest.0   = src
  1215.  
  1216.     DO FOREVER
  1217.         _prev = _num-1
  1218.         pos = Index(_dest._prev, '\n')
  1219.         IF (pos = 0)
  1220.         THEN LEAVE
  1221.  
  1222.         _dest._num  = SubStr(_dest._prev, pos+2)
  1223.         _dest._prev = Left(_dest._prev, pos-1)
  1224.         _num = _num + 1
  1225.     END
  1226.     _dest.num = _num
  1227. Return
  1228. /* /// */
  1229. /* /// ConvertToShortMeasurement(inp)
  1230. */
  1231. /*************************************************/
  1232. /* convert long measurement to short measurement */
  1233. /* (CENTIMETERS -> cm ...)                       */
  1234. /*************************************************/
  1235. ConvertToShortMeasurement:
  1236.     PARSE ARG inp
  1237.  
  1238.     long = 'INCHES CENTIMETERS MILLIMETERS PICAS POINTS PRINTERPICAS PRINTERPOINTS CICEROS DIDOTPOINTS FEET METERS'
  1239.     short = 'i cm mm p pt pp ppt c d f m'
  1240.  
  1241.     outp = ''
  1242.     DO k = 1 to Words(long)
  1243.  
  1244.         IF ( Word(long, k) = inp )
  1245.         THEN outp = Word(short, k)
  1246.     END
  1247.     IF (outp = '')
  1248.     THEN DO
  1249.         DO k = 1 to Words(long)
  1250.             IF (Word(long, k) = inp)
  1251.             THEN outp = Word(short, k)
  1252.         END
  1253.     END
  1254. Return outp
  1255. /* /// */
  1256. /* /// DoAllFonts
  1257. */
  1258. DoAllFonts:
  1259.     /* current number of pics per page */
  1260.     nppp = 0
  1261.  
  1262.     DO fontNum = 0 TO anzFonts-1
  1263.         lastpic = 0
  1264.         Call AddObject(fonts.fontNum)
  1265.  
  1266.         IF (lastpic = 1)
  1267.         THEN DO /* last thumbnail on page */
  1268.             IF (BusyHandle(1, fontNum, 0, 0) = 1)
  1269.             THEN DO
  1270.                 Call CleanUp()
  1271.                 EXIT
  1272.             END
  1273.  
  1274.             Call BusyText(2, "%c%brefreshing display%n\n%c...%n")
  1275.             Call BusyProgress(2, 100)
  1276.  
  1277.             'REFRESH ON'
  1278.             'REFRESHWINDOW WINDOW "'|| oldWinName || '"'
  1279.             IF         (prefs.PV_action = 1)    THEN Call PrintPage
  1280.             ELSE IF (prefs.PV_action = 2)     THEN Call SaveDocument
  1281.             pagenumber = pagenumber + 1
  1282.             'DISPLAY PAGE "'|| pageNumber ||'" WINDOW "'|| oldWinName ||'"'
  1283.             nppp = 0
  1284.             'REFRESH OFF'
  1285.         END
  1286.     END
  1287. Return
  1288. /* /// */
  1289. /* /// DrawTextObject()
  1290. */
  1291. DrawTextObject:
  1292.     PARSE ARG name
  1293.     say name ffs_size
  1294.     'DRAWTEXTOBJ 'd1 d2' INFRONT WINDOW "'oldwinname'"'
  1295.      txtid = RESULT
  1296.     'SELECTTEXT INOBJECT 'txtid' WINDOW "'oldwinname'"'
  1297.     'BEGINCOMMANDCAPTURE'
  1298.         'SETTRACKTABLE NONE'
  1299.         'SETLEADING RELATIVE 100%'
  1300.         'SETTYPESIZE 'ffs_size
  1301.     'ENDCOMMANDCAPTURE'
  1302.     'SETFONT "'name'" WINDOW "'oldwinname'"'
  1303.  
  1304.     /* print buffer instead of generating new textsample */
  1305.     IF (fontNum > 0)
  1306.     THEN DO
  1307.         Call BusyText(2, "%c%binserting buffer%n\n%c...%n")
  1308.         Call BusyProgress(2, 100)
  1309.         'INSERTTEXT RETAINFORMAT TRUE TEXTCODE "PageStream" FILE "T:FontSample.TXT" FILTER "IFFCTXT" NOSTATUS'
  1310.         'SELECTTEXT ALL INOBJECT 'txtid' WINDOW "'oldwinname'"'
  1311.         
  1312.         /*
  1313.         ** insert font name if wanted
  1314.         */
  1315.         'REPLACETEXT FIND "\%FN" REPLACE "'|| name ||'" ALL WHOLEWORDS TRUE CASESENSITIVE FALSE IGNOREACCENTS TRUE ARTICLE'
  1316.     END
  1317.  
  1318.     ELSE DO
  1319.         SELECT
  1320.             WHEN (prefs.PV_printWhat = 1) THEN DO
  1321.                 /*
  1322.                 ** generate almost all character samples
  1323.                 */
  1324.                 n = 0
  1325.                 Call BusyText(2, "%c%btrying to print all characters%n\n%c...%n")
  1326.                 Call BusyProgress(2, n)
  1327.                 codes = '32-64,0,'
  1328.                 codes = codes || '65-90,0,'
  1329.                 codes = codes || '91-122,0,'
  1330.                 codes = codes || '123-127,160-190,0,'
  1331.                 codes = codes || '191-215,0,'
  1332.                 codes = codes || '216-247,0,'
  1333.                 codes = codes || '248-255,305-307,320-322,329,338-339,352-353,381-382,402,0,'
  1334.                 codes = codes || '768-780,807-808,915-917,920,923,926,928,931,933-934,936,937,0,'
  1335.                 codes = codes || '945-961,963-969,977,981-982,987-988,0,'
  1336.                 codes = codes || '1489-1490,9184-8195,8201,8211-8212,8216-8218,8220-8222,8224-8226,8230,8240,8242-8243 '
  1337.                 ende = 0
  1338.                 DO WHILE (ende = 0)
  1339.                     pos = POS(',', codes)
  1340.                     IF (pos = 0)
  1341.                     THEN DO
  1342.                         pos = length(codes)
  1343.                         ende = 1
  1344.                     END /* if pos */
  1345.                     part = left(codes, pos-1)
  1346.                     codes = right(codes, (length(codes) - pos))
  1347.                     pos = POS('-', part)
  1348.                     IF (pos = 0)
  1349.                     THEN DO
  1350.                         von = part
  1351.                         bis = part
  1352.                     END /* if pos */
  1353.                     ELSE DO
  1354.                         von = left(part, pos-1)
  1355.                         bis = right(part, length(part) - pos)
  1356.                     END /* else do */
  1357.                     IF (von = 0)
  1358.                     THEN DO
  1359.                         n = n + (100/9)
  1360.                         IF (BusyHandle(2, 0, n, 0) = 1)
  1361.                         THEN DO
  1362.                             Call CleanUp()
  1363.                             EXIT
  1364.                         END
  1365.                         'INSERTCONTROL NEWLINE'
  1366.                     END /* end if von */
  1367.                     ELSE DO
  1368.                         DO x = von TO bis
  1369.                             xx = '0000'||x
  1370.                             'INSERTCHAR UNICODE '|| substr(xx, length(xx)-3,4)
  1371.                         END /* do x */
  1372.                     END /* else do */
  1373.                 END /* do */
  1374.             END /* when */
  1375.  
  1376.             WHEN (prefs.PV_printWhat = 2) THEN DO
  1377.                 /* use textfile for sample text - ask user how to import it!*/
  1378.                 'INSERTTEXT FILE "'|| prefs.PV_sText ||'"'
  1379.             END /* when */
  1380.  
  1381.             OTHERWISE DO
  1382.                 /*
  1383.                 ** print user defined fontsample
  1384.                 */
  1385.                 /*
  1386.                 ** abbreviations for the text
  1387.                 ** %FONTNAME / %FN : current font name
  1388.                 */
  1389.  
  1390.                 DO tk = 0 TO (prefs.fSample.num - 1)
  1391.                     infoText.tk = prefs.fSample.tk
  1392.                     /* Picture Name */
  1393.                     infoText.tk = ReplaceItemInText(infoText.tk, '\%FONTNAME', '\%FN')
  1394. /*
  1395.                     infoText.tk = ReplaceItemInText(infoText.tk, '\%FN', name)
  1396. */
  1397.                 END
  1398.  
  1399.                 DO tk = 0 TO (prefs.fSample.num - 1)
  1400.                     'INSERT "'|| infoText.tk ||'" WINDOW "'oldwinname'"'
  1401.                     IF (tk < (prefs.fSample.num - 1))
  1402.                     THEN DO
  1403.                         'INSERTCONTROL NEWLINE WINDOW "'oldwinname'"'
  1404.                     END
  1405.                 END
  1406.  
  1407.             END /* WHEN */
  1408.  
  1409.         END /* SELECT */
  1410.  
  1411.         /*
  1412.         ** first textsample. copy the content to speed up the following ones by just pasting it
  1413.         */
  1414.         'SELECTTEXT ALL INOBJECT 'txtid' WINDOW "'oldwinname'"'
  1415.         'EXPORTTEXT RETAINFORMAT FALSE TEXTCODE "PageStream" FILE "T:FontSample.TXT" FILTER "IFFCTXT" STATUS FORCE'
  1416.  
  1417.         /*
  1418.         ** insert font name if wanted
  1419.         */
  1420.         'REPLACETEXT FIND "\%FN" REPLACE "'|| name ||'" ALL WHOLEWORDS TRUE CASESENSITIVE FALSE IGNOREACCENTS TRUE ARTICLE'
  1421.  
  1422.     END /* if fontNum */
  1423.  
  1424.     'GETTEXTOBJ POSITION posi OBJECTID 'txtid' WINDOW "'oldwinname'"'
  1425.     txtid = RESULT
  1426. Return
  1427. /* /// */
  1428. /* /// DrawPageBorder()
  1429. */
  1430. DrawPageBorder:
  1431.     'DISPLAY MPG RIGHT WINDOW "'oldwinname'"'
  1432.  
  1433.     d1 = leftgap + pbw/2
  1434.     d2 = topgap + pbw/2
  1435.     d3 = pagesizex-rightgap - pbw/2
  1436.     d4 = pagesizey-bottomgap - pbw/2 - (lsize+1)
  1437.  
  1438.     'DRAWBOX 'd1 d2 d3 d4' WINDOW "'oldwinname'"'
  1439.      dummy = RESULT
  1440.     'SETSTROKEWEIGHT 'pbw' OBJECTID 'dummy
  1441.     'SETSTROKEJOIN ROUND OBJECTID 'dummy
  1442.  
  1443.     IF (lsize > 0)
  1444.     THEN DO
  1445.         d1 = d1 - pbw/2
  1446.         d3 = d3 + pbw/2
  1447.         d4 = d4 + pbw/2 + 1
  1448.         'DRAWTEXTOBJ 'd1 d4' INFRONT WINDOW "'oldwinname'"'
  1449.         txtid = RESULT
  1450.         'SELECTTEXT INOBJECT 'txtid' WINDOW "'oldwinname'"'
  1451.         bottomtwidth = d3 - d1
  1452.  
  1453.         'BEGINCOMMANDCAPTURE'
  1454.             'SETTRACKTABLE NONE'
  1455.             'SETLEADING RELATIVE 100%'
  1456.             'SETTYPESIZE "'lsize'"'
  1457.         'ENDCOMMANDCAPTURE'
  1458.  
  1459.         'INSERT "'|| pgsName pgsVersion ||' - '|| pgsCopy ||'" WINDOW "'oldwinname'"'
  1460.         'SETTABRULER "RIGHT" 'bottomtwidth' WINDOW "'oldwinname'"'
  1461.         'INSERTCONTROL TAB WINDOW "'oldwinname'"'
  1462.         'INSERT "Page " WINDOW "'oldwinname'"'
  1463.         'INSERTNUMBER PAGE WINDOW "'oldwinname'"'
  1464.     END
  1465.     'DISPLAY PAGE 'pagenumber' WINDOW "'oldwinname'"'
  1466. Return
  1467. /* /// */
  1468. /* /// err(res)
  1469. */
  1470. err:
  1471.     PARSE ARG res
  1472.  
  1473.     ADDRESS 'PAGESTREAM'
  1474.     'LOCKINTERFACE FALSE'
  1475.     'REFRESH ON'
  1476.     'REFRESHWINDOW WINDOW "'|| oldWinName ||'"'
  1477.     ''defmeasure''
  1478.     Call pgsRequester(GetRXmuiString(res) "in line" sigl-1)
  1479. Exit
  1480. /* /// */
  1481. /* /// EventLoop()
  1482. */
  1483. EventLoop:
  1484.     /*
  1485.     ** this is the standard cycle to handle an application
  1486.     */
  1487.     ctrl_C = 2**12
  1488.     s = 0
  1489.     DO FOREVER
  1490.         Call Handle("muiApp", "H", s)
  1491.         ws = 0
  1492.         DO i = 0 TO (H.num - 1)
  1493.             id = H.i
  1494.             SELECT
  1495.                 WHEN (id = "G_AVAIL" ) | (id = "G_SELECT" )
  1496.                 THEN DO
  1497.                     Call SetListTitles()
  1498.                 END
  1499.  
  1500.                 WHEN (id = "QUIT") | (id = "G_CANCEL")
  1501.                 THEN DO
  1502.                     Call CleanUp
  1503.                     EXIT
  1504.                 END
  1505.  
  1506.                 WHEN (id = "G_GRABMP")
  1507.                 THEN DO
  1508.                     Call PrefsWindowGet()
  1509.                     Call GrabMasterPage()
  1510.                     Call PrefsWindowSet()
  1511.                 END
  1512.  
  1513.                 WHEN (id = "MUIMENULOAD")
  1514.                 THEN DO
  1515.                     Call LoadPrefsAs()
  1516.                     Call PrefsWindowSet()
  1517.                 END
  1518.  
  1519.                 WHEN (id = "MUIMENUSAVE")
  1520.                 THEN DO
  1521.                     Call PrefsWindowGet()
  1522.                     Call SavePrefs()
  1523.                     Call PrefsWindowSet()
  1524.                 END
  1525.  
  1526.                 WHEN (id = "MUIMENUSAVEAS")
  1527.                 THEN DO
  1528.                     Call PrefsWindowGet()
  1529.                     Call SavePrefsAs()
  1530.                     Call PrefsWindowSet()
  1531.                 END
  1532.  
  1533.                 WHEN (id = "MUIMENUQUIT")
  1534.                 THEN DO
  1535.                     IF (ShowRequester('Really Quit?', 'No|Yes') = 0)
  1536.                     THEN DO
  1537.                         Call CleanUp
  1538.                         EXIT
  1539.                     END
  1540.                 END
  1541.  
  1542.                 WHEN (id = "G_OK")
  1543.                 THEN DO
  1544.                     Return
  1545.                 END
  1546.  
  1547.                 OTHERWISE Say h.i
  1548.             END
  1549.         END
  1550.         IF (~ws) THEN Iterate
  1551.         s = Wait( OR(h.signals, ctrl_C) )
  1552.         IF (AND(s, ctrl_C) ~= 0)
  1553.         THEN EXIT
  1554.     END
  1555. EXIT
  1556. /* /// */
  1557. /* /// FontCatalog()
  1558. */
  1559. FontCatalog:
  1560.     ADDRESS 'PAGESTREAM'
  1561.  
  1562.     defmeasure = GetDefaultMeasurementSystem()
  1563.  
  1564.     'GETDIMENSIONS dim MASTERPAGE "'mname'" WINDOW "'oldwinname'"'
  1565.     IF (dim.orientation = 'PORTRAIT')
  1566.     THEN DO
  1567.         rpagesizex = dim.width
  1568.         rpagesizey = dim.height
  1569.     END
  1570.     ELSE DO
  1571.         rpagesizex = dim.height
  1572.         rpagesizey = dim.width
  1573.     END
  1574.  
  1575.     Call ConvertTextToMultipleLines(x2c(prefs.PV_fSample))
  1576.     prefs.fSample.num = _dest.num
  1577.     DO k = 0 TO (_dest.num - 1)
  1578.         prefs.fSample.k = _dest.k
  1579.     END
  1580.  
  1581.     leftGap    = p2d(prefs.PV_left,    measure)
  1582.     rightGap   = p2d(prefs.PV_right,   measure)
  1583.     topGap     = p2d(prefs.PV_top,     measure)
  1584.     bottomGap  = p2d(prefs.PV_bottom,  measure)
  1585.     pbw        = p2d(prefs.PV_pbw,     measure)
  1586.     lsize      = p2d(prefs.PV_lSize,   measure)
  1587.     thumbSpace = p2d(prefs.PV_thumbSpace, measure)
  1588.     gap        = p2d(prefs.PV_gap,     measure)
  1589.     sbw        = p2d(prefs.PV_sbw,     measure)
  1590.     txtSize    = p2d(prefs.PV_font,    measure)
  1591.     startx = leftgap + (pbw + gap)
  1592.     starty = topgap  + (pbw + gap)
  1593.  
  1594.     /* some more defaults and transformations */
  1595.  
  1596.     maxheight = 0
  1597.     maxwidth  = 0
  1598.  
  1599.     IF (prefs.PV_ffSize = 1)
  1600.     THEN ffs_size = p2d(prefs.PV_f_size, measure)
  1601.     ELSE ffs_size = 15
  1602.  
  1603.     pagesizex = rpagesizex
  1604.     pagesizey = rpagesizey
  1605.  
  1606.     IF (prefs.PV_ffSize = 0)
  1607.     THEN DO
  1608.       /* horizontal and vertical sizes for one fontsample */
  1609.       /* including: border, sample and text               */
  1610.       /* excluding: gap between thumbnails.               */
  1611.       /****************************************************/
  1612.       psx   = (pagesizex - leftGap - rightGap  - (2*pbw) - (prefs.PV_x_num+1)*gap) / prefs.PV_x_num
  1613.       psy   = (pagesizey - topGap  - bottomGap - (lsize+1) - (2*pbw) - (prefs.PV_y_num+1)*gap) / prefs.PV_y_num
  1614.  
  1615.       /* psy without the text under it */
  1616.       psynt = psy - (txtsize+1)
  1617.  
  1618.       /* horizontalsize/verticalsize */
  1619.       psf = (psx-2*(sbw+1)) / (psynt-2*(sbw+1))
  1620.  
  1621.       /* number of samples/page */
  1622.       anzp = prefs.PV_x_num * prefs.PV_y_num
  1623.     END
  1624.  
  1625.     fontNum = 0
  1626.  
  1627.     /*
  1628.     ** draw border for first page
  1629.     */
  1630.     CALL DrawPageBorder
  1631.  
  1632.     'REFRESH OFF'
  1633.  
  1634.     CALL DoAllFonts
  1635.  
  1636.     IF (nppp=0)
  1637.     THEN 'DELETEPAGE'
  1638.  
  1639.     IF (nppp > 0)
  1640.     THEN DO
  1641.       IF (prefs.PV_action = 1)
  1642.       THEN DO /* ready but not yet printed */
  1643.         Call BusyText(2, "%c%brefreshing display%n\n%c...%n")
  1644.         Call BusyProgress(2, 50)
  1645.         'REFRESH ON'
  1646.         'REFRESHWINDOW WINDOW "'|| oldWinName ||'"'
  1647.         CALL PrintPage
  1648.       END
  1649.  
  1650.       IF (prefs.PV_action = 2)
  1651.       THEN DO /* ready but not yet saved */
  1652.         Call BusyText(2, "%c%brefreshing display%n\n%c...%n")
  1653.         Call BusyProgress(2, 50)
  1654.         'REFRESH ON'
  1655.         'REFRESHWINDOW WINDOW "'|| oldWinName ||'"'
  1656.         CALL SaveDocument
  1657.       END
  1658.     END
  1659.     Call CleanUp()
  1660. EXIT
  1661. /* /// */
  1662. /* /// GetDefaultMeasurementSystem()
  1663. */
  1664. GetDefaultMeasurementSystem:
  1665.     PROCEDURE
  1666.  
  1667.     'GETMEASUREMENTS COORDINATE stemc RELATIVE rel TEXT tex FROM fro'
  1668.      st = 'SETMEASUREMENTS COORDINATE 'stemc.horizontal stemc.vertical' RELATIVE 'rel' TEXT 'tex' FROM 'fro
  1669.     'SETMEASUREMENTS COORDINATE POINTS SAMEAS RELATIVE SAMEAS TEXT POINTS FROM PAGE'
  1670. Return st
  1671. /* /// */
  1672. /* /// GetFileName(prefName)
  1673. */
  1674. GetFileName:
  1675.     PARSE ARG fileName,text
  1676.     file = FilePart(fileName)
  1677.     path = PathPart(fileName)
  1678.     'GETFILE TITLE "'|| text ||'" PATH "'|| path ||'" FILE "'|| file ||'"'
  1679.     IF (RC = 0)
  1680.     THEN fileName = RESULT
  1681.     ELSE fileName = 0
  1682. Return fileName
  1683. /* /// */
  1684. /* /// GetFontList()
  1685. */
  1686. GetFontList:
  1687.     ADDRESS PAGESTREAM 'GETFONTLIST fonts'
  1688.     anzFonts = RESULT
  1689.  
  1690.     busyReq = BusyOpen("getting font list...", 1, "%b%creading font...%n\n%c", "", "", anzFonts-1, 0, 0)
  1691.  
  1692.     percent10   = 0.1 * anzFonts
  1693.     currentPERC = 0
  1694.  
  1695.     DO k=0 TO (anzFonts - 1)
  1696.         Call DoMethod("G_SELECT", "INSERT", fonts.k, "SORTED")
  1697.         IF (k >= currentPERC)
  1698.         THEN DO
  1699.             DO WHILE ( (k >= currentPERC) & (percent10 > 0) )
  1700.                 currentPERC = currentPERC + percent10
  1701.             END
  1702.             Call BusyText(1, "%b%creading font...%n\n%c"|| fonts.k ||"%n")
  1703.             IF (BusyHandle(1, k, 0, 0) = 1)
  1704.             THEN DO
  1705.                 Call CleanUp(busyReq)
  1706.                 EXIT
  1707.             END
  1708.         END
  1709.  
  1710.     END
  1711.  
  1712.     Call SetListTitles()
  1713.     Call BusyClose()
  1714. RETURN
  1715. /* /// */
  1716. /* /// GrabMasterPage()
  1717. */
  1718. GrabMasterPage:
  1719.     ADDRESS 'PAGESTREAM'
  1720.  
  1721.     'GETPAGEMASTERPAGE MASTERPAGE mname'
  1722.     IF (RC = 10)
  1723.     THEN DO
  1724.         Call ShowRequester('Please open a new Document first! Quit now!')
  1725.         Return
  1726.     END
  1727.  
  1728.     'GETMEASUREMENTS COORDINATE stemc'
  1729.  
  1730.     IF (stemc.vertical = 'SAMEAS')
  1731.     THEN stemc.vertical = stemc.horizontal
  1732.  
  1733.     'GETMARGINGUIDES guides'
  1734.  
  1735.     prefs.PV_left   = guides.inside  || ConvertToShortMeasurement(stemc.horizontal)
  1736.     prefs.PV_right  = guides.outside || ConvertToShortMeasurement(stemc.horizontal)
  1737.     prefs.PV_top    = guides.top     || ConvertToShortMeasurement(stemc.vertical)
  1738.     prefs.PV_bottom = guides.bottom  || ConvertToShortMeasurement(stemc.vertical)
  1739. Return
  1740. /* /// */
  1741. /* /// LoadPrefs(fileName)
  1742. */
  1743. LoadPrefs:
  1744.  
  1745.     /*
  1746.     ** load the preferences file
  1747.     ** -------------------------
  1748.     */
  1749.  
  1750.     PARSE ARG fileName
  1751.     IF (fileName = "")
  1752.     THEN fileName = standardPrefs
  1753.  
  1754.     say 'loading 'fileName' ...'
  1755.  
  1756.     /*
  1757.     ** Check the version of the prefs file
  1758.     */
  1759.  
  1760.     IF (CheckPrefsVersion(fileName) ~= 0)
  1761.     THEN DO
  1762.         Call ShowRequester('Prefsfile not found or not valid! Using defaults.', 'Hmm...')
  1763.         Return
  1764.     END
  1765.     ELSE DO
  1766.         Call Open('Prefs', fileName, 'R')
  1767.         Say 'Reading prefs file...'
  1768.         dummy = ReadLN('Prefs')
  1769.         DO xx = 1 to 100
  1770.             command = ReadLn('Prefs')
  1771.             INTERPRET command
  1772.             IF EOF('Prefs') THEN LEAVE
  1773.         END
  1774.         Call Close('Prefs')
  1775.     END
  1776. RETURN
  1777. /* /// */
  1778. /* /// LoadPrefsAs()
  1779. */
  1780. LoadPrefsAs:
  1781.     /*
  1782.     ** Load Prefs with selectable name
  1783.     ** -------------------------------
  1784.     */
  1785.  
  1786.     prefName = GetFileName(currentPrefs, 'Load Preferences...')
  1787.     IF (prefName ~= 0)
  1788.     THEN DO
  1789.         currentPrefs = prefName
  1790.         Call LoadPrefs(currentPrefs)
  1791.     END
  1792. Return
  1793. /* /// */
  1794. /* /// pgsRequester(text)
  1795. */
  1796. pgsRequester:
  1797.     PARSE ARG meldung
  1798.  
  1799.     /*
  1800.     ** Convert to multiple lines
  1801.     */
  1802.  
  1803.     _num       = 1
  1804.     mLines.num = _num
  1805.     mLines.0   = meldung
  1806.  
  1807.     DO FOREVER
  1808.         _prev = _num-1
  1809.         pos = Index(mLines._prev, '|')
  1810.         IF (pos = 0)
  1811.         THEN LEAVE
  1812.  
  1813.         mLines._num  = SubStr(mLines._prev, pos+1)
  1814.         mLines._prev = Left(mLines._prev, pos-1)
  1815.         _num = _num + 1
  1816.     END
  1817.     mLines.num = _num
  1818.  
  1819.     l = 0
  1820.     DO kk = 0 TO mLines.num - 1
  1821.         IF (l < Length(mLines.kk) * 8)
  1822.         THEN l = Length(mLines.kk) * 8
  1823.         Say mLines.kk
  1824.     END
  1825.  
  1826.     ADDRESS "PAGESTREAM"
  1827.     'ALLOCAREXXREQUESTER "error inside '|| pgsName ||'" '|| (l+20) (40 + mLines.num * 10)
  1828.      reqhandle = RESULT
  1829.  
  1830.     'ADDAREXXGADGET '|| reqhandle ||' EXIT '|| (l/2 - 25) (20 + mLines.num * 10) ||' 50 LABEL "_Ok"'
  1831.      dummy = RESULT
  1832.  
  1833.     DO kk = 0 TO mLines.num - 1
  1834.         'ADDAREXXGADGET 'reqhandle' TEXT 10 ' (10 + kk*10) l 'STRING "'mLines.kk'"'
  1835.     END
  1836.  
  1837.     'DOAREXXREQUESTER 'reqhandle
  1838.      dummy = RESULT
  1839.  
  1840.     'FREEAREXXREQUESTER 'reqhandle
  1841. RETURN
  1842. /* /// */
  1843. /* /// PrefsWindowGet()
  1844. */
  1845. PrefsWindowGet:
  1846.     Call GetAttr("g_top",        "CONTENTS", "prefs.PV_top")
  1847.         Call SetCorrectMSys('prefs.PV_top')
  1848.     Call GetAttr("g_left",       "CONTENTS", "prefs.PV_left")
  1849.         Call SetCorrectMSys('prefs.PV_left')
  1850.     Call GetAttr("g_bottom",     "CONTENTS", "prefs.PV_bottom")
  1851.         Call SetCorrectMSys('prefs.PV_bottom')
  1852.     Call GetAttr("g_right",      "CONTENTS", "prefs.PV_right")
  1853.         Call SetCorrectMSys('prefs.PV_right')
  1854.     Call GetAttr("g_pbw",        "CONTENTS", "prefs.PV_pbw")
  1855.         Call SetCorrectMSys('prefs.PV_pbw')
  1856.     Call GetAttr("g_lsize",      "CONTENTS", "prefs.PV_lsize")
  1857.         Call SetCorrectMSys('prefs.PV_lsize')
  1858.  
  1859.     Call GetAttr("g_ffsize",     "ACTIVE",   "prefs.PV_ffSize")
  1860.     Call GetAttr("g_printwhat",  "ACTIVE",   "prefs.PV_printWhat")
  1861.     Call GetAttr("g_scale",      "ACTIVE",   "prefs.PV_scale")
  1862.     Call GetAttr("g_action",     "ACTIVE",   "prefs.PV_action")
  1863.     Call GetAttr("g_x_num",      "VALUE",    "prefs.PV_x_num")
  1864.     Call GetAttr("g_y_num",      "VALUE",    "prefs.PV_y_num")
  1865.     Call GetAttr("g_f_size",     "CONTENTS", "prefs.PV_f_size")
  1866.         Call SetCorrectMSys('prefs.PV_f_size')
  1867.     Call GetAttr("g_vertical",   "SELECTED", "prefs.PV_vertical")
  1868.     Call GetAttr("g_sbw",        "CONTENTS", "prefs.PV_sbw")
  1869.         Call SetCorrectMSys('prefs.PV_sbw')
  1870.     Call GetAttr("g_thumbSpace", "CONTENTS", "prefs.PV_thumbSpace")
  1871.         Call SetCorrectMSys('prefs.PV_thumbSpace')
  1872.     Call GetAttr("g_gap",        "CONTENTS", "prefs.PV_gap")
  1873.         Call SetCorrectMSys('prefs.PV_gap')
  1874.     Call GetAttr("g_font",       "CONTENTS", "prefs.PV_font")
  1875.         Call SetCorrectMSys('prefs.PV_font')
  1876.     Call GetAttr("g_fsample",    "CONTENTS", "rawText")
  1877.         prefs.PV_fSample = ConvertText2hex(rawText)
  1878.     
  1879.     Call GetAttr("g_sdir",       "CONTENTS", "prefs.PV_sdir")
  1880.     Call GetAttr("g_stext",      "CONTENTS", "prefs.PV_stext")
  1881.  
  1882.     /*
  1883.     ** also get the selected font list
  1884.     */
  1885.     Call DoMethod("G_SELECT", "GETENTRIES", fonts)
  1886.     anzFonts = fonts.num+1
  1887.  
  1888. Return
  1889. /* /// */
  1890. /* /// PrefsWindowSet()
  1891. */
  1892. PrefsWindowSet:
  1893.     Call Set("g_top",        "CONTENTS", prefs.PV_top)
  1894.     Call Set("g_left",       "CONTENTS", prefs.PV_left)
  1895.     Call Set("g_bottom",     "CONTENTS", prefs.PV_bottom)
  1896.     Call Set("g_right",      "CONTENTS", prefs.PV_right)
  1897.     Call Set("g_pbw",        "CONTENTS", prefs.PV_pbw)
  1898.     Call Set("g_lsize",      "CONTENTS", prefs.PV_lsize)
  1899.  
  1900.     Call Set("g_ffsize",     "ACTIVE",   prefs.PV_ffSize)
  1901.     Call Set("g_printwhat",  "ACTIVE",   prefs.PV_printWhat)
  1902.     Call Set("g_scale",      "ACTIVE",   prefs.PV_scale)
  1903.     Call Set("g_action",     "ACTIVE",   prefs.PV_action)
  1904.     Call Set("g_x_num",      "VALUE",    prefs.PV_x_num)
  1905.     Call Set("g_y_num",      "VALUE",    prefs.PV_y_num)
  1906.     Call Set("g_f_size",     "CONTENTS", prefs.PV_f_size)
  1907.     Call Set("g_vertical",   "SELECTED", prefs.PV_vertical)
  1908.     Call Set("g_sbw",        "CONTENTS", prefs.PV_sbw)
  1909.     Call Set("g_thumbSpace", "CONTENTS", prefs.PV_thumbSpace)
  1910.     Call Set("g_gap",        "CONTENTS", prefs.PV_gap)
  1911.     Call Set("g_font",       "CONTENTS", prefs.PV_font)
  1912.     Call Set("g_fsample",    "CONTENTS", ParseText(x2c(prefs.PV_fsample)))
  1913.     
  1914.     Call Set("g_sdir",       "CONTENTS", prefs.PV_sdir)
  1915.     Call Set("g_stext",      "CONTENTS", prefs.PV_stext)
  1916. Return
  1917. /* /// */
  1918. /* /// PrintPage()
  1919. */
  1920. PrintPage:
  1921.     Call BusyText(2, "%c%bprinting page%n\n%c"|| pagenumber ||"%n")
  1922.     Call BusyProgress(2, 100)
  1923.  
  1924.     IF (prefs.PV_scale = 0)
  1925.     THEN DO
  1926.       'PRINTDOCUMENT PAGE "" OUTPUT GRAYSCALE SCALE "ACTUAL"'
  1927.     END
  1928.     IF (prefs.PV_scale = 1)
  1929.     THEN DO
  1930.       'PRINTDOCUMENT PAGE "" OUTPUT GRAYSCALE SCALE "FULLPAGE"'
  1931.     END
  1932.  
  1933.     Call BusyText(2, "%c%bdeleting page%n\n%c...%n")
  1934.     Call BusyProgress(2, 50)
  1935.     'SELECTOBJECT ALL WINDOW "'oldwinname'"'
  1936.     Call BusyProgress(2, 100)
  1937.     'DELETEOBJECT WINDOW "'oldwinname'"'
  1938. Return
  1939. /* /// */
  1940. /* /// ReplaceItemInText(src, item, new)
  1941. */
  1942. ReplaceItemInText:
  1943.     PARSE ARG src,item,new
  1944.  
  1945.     /*
  1946.     ** prepare the thumbnail text
  1947.     */
  1948.  
  1949.     dest = src
  1950.     pos = Index(dest, item)
  1951.     IF (pos > 0)
  1952.     THEN DO
  1953.         dest = DelStr(dest, pos, Length(item))
  1954.         dest = Insert(new, dest, pos-1)
  1955.     END
  1956. Return dest
  1957. /* /// */
  1958. /* /// SaveDocument()
  1959. */
  1960. SaveDocument:
  1961.     Call BusyText(2, "%c%bsaving document%n\n%c"|| prefs.PV_sDir ||"%n")
  1962.     Call BusyProgress(2, 100)
  1963.     'SAVEDOCUMENT FILE "'|| prefs.PV_sDir ||'" FILTER IFFDOC STATUS FORCE'
  1964. Return
  1965. /* /// */
  1966. /* /// SavePrefs(fileName)
  1967. */
  1968. SavePrefs:
  1969.     /*
  1970.     ** save the preferences file
  1971.     ** -------------------------
  1972.     */
  1973.  
  1974.     PARSE ARG filename
  1975.     IF (fileName = "")
  1976.     THEN fileName = standardPrefs
  1977.  
  1978.     say 'saving 'fileName' ...'
  1979.  
  1980.     okOpen = Open('Prefs', fileName, 'W')
  1981.     IF (okOpen = 1)
  1982.     THEN DO
  1983. OPTIONS FAILAT 11
  1984.         Say 'writing prefs "'|| fileName ||'"...'
  1985.         WriteLN('Prefs', pgsName pgsVersion)
  1986.  
  1987.         Call WritePrefsNameValue('Prefs', 'prefs.PV_top')
  1988.         Call WritePrefsNameValue('Prefs', 'prefs.PV_left')
  1989.         Call WritePrefsNameValue('Prefs', 'prefs.PV_bottom')
  1990.         Call WritePrefsNameValue('Prefs', 'prefs.PV_right')
  1991.         Call WritePrefsNameValue('Prefs', 'prefs.PV_pbw')
  1992.         Call WritePrefsNameValue('Prefs', 'prefs.PV_lsize')
  1993.  
  1994.         Call WritePrefsNameValue('Prefs', 'prefs.PV_ffSize')
  1995.         Call WritePrefsNameValue('Prefs', 'prefs.PV_printWhat')
  1996.         Call WritePrefsNameValue('Prefs', 'prefs.PV_x_num')
  1997.         Call WritePrefsNameValue('Prefs', 'prefs.PV_y_num')
  1998.         Call WritePrefsNameValue('Prefs', 'prefs.PV_f_size')
  1999.         Call WritePrefsNameValue('Prefs', 'prefs.PV_vertical')
  2000.         Call WritePrefsNameValue('Prefs', 'prefs.PV_sbw')
  2001.         Call WritePrefsNameValue('Prefs', 'prefs.PV_thumbSpace')
  2002.         Call WritePrefsNameValue('Prefs', 'prefs.PV_gap')
  2003.         Call WritePrefsNameValue('Prefs', 'prefs.PV_font')
  2004.         Call WritePrefsNameValue('Prefs', 'prefs.PV_fsample')
  2005.         Call WritePrefsNameValue('Prefs', 'prefs.PV_scale')
  2006.         Call WritePrefsNameValue('Prefs', 'prefs.PV_sdir')
  2007.         Call WritePrefsNameValue('Prefs', 'prefs.PV_stext')
  2008.         Call WritePrefsNameValue('Prefs', 'prefs.PV_action')
  2009.  
  2010.         WriteLN('Prefs', '/* END OF Prefsfile for '|| pgsName pgsVersion ||' ('|| pgsDate ||') */')
  2011. OPTIONS FAILAT 10
  2012.         Call Close('Prefs')
  2013.     END
  2014.     ELSE DO
  2015.         Say 'Error writing prefs file "'|| fileName ||'"'
  2016.         Call ShowRequester('ERROR writing prefs file '|| fileName, 'Damn!')
  2017.     END
  2018. RETURN
  2019. /* /// */
  2020. /* /// SavePrefsAs()
  2021. */
  2022. SavePrefsAs:
  2023.     /*
  2024.     ** Save Prefs with selectable name
  2025.     ** -------------------------------
  2026.     */
  2027.  
  2028.     prefName = GetFileName(currentPrefs, 'Save Preferences As...')
  2029.     IF (prefName ~= 0)
  2030.     THEN DO
  2031.         currentPrefs = prefName
  2032.         Call SavePrefs(currentPrefs)
  2033.     END
  2034. Return
  2035. /* /// */
  2036. /* /// SetCorrectMSys(vName)
  2037. */
  2038. SetCorrectMSys:
  2039.     PARSE ARG vName
  2040.  
  2041.     Interpret vName || ' = p2d('|| vName || ', mSys('|| vName ||')) || mSys('|| vName ||')'
  2042. Return
  2043. /* /// */
  2044. /* /// SetDefaultPrefs()
  2045. */
  2046. SetDefaultPrefs:
  2047.  
  2048.     /*
  2049.     ** defaults needed in the program
  2050.     */
  2051.  
  2052.     measure = 'pt'
  2053.     tf.0 = 'FALSE'
  2054.     tf.1 = 'TRUE'
  2055.     Progress = 0
  2056.     currentPrefs = standardPrefs
  2057.  
  2058.     prefs.PV_left           = '1cm'
  2059.     prefs.PV_right           = '1cm'
  2060.     prefs.PV_top           = '1cm'
  2061.     prefs.PV_bottom           = '1cm'
  2062.     prefs.PV_pbw           = '3pt'
  2063.     prefs.PV_lsize           = '12pt'
  2064.  
  2065.     prefs.PV_x_num           = '4'
  2066.     prefs.PV_y_num           = '6'
  2067.     prefs.PV_f_size           = '20pt'
  2068.     prefs.PV_vertical      = '0'
  2069.     prefs.PV_thumbSpace       = '1mm'
  2070.     prefs.PV_gap           = '5mm'
  2071.     prefs.PV_sbw           = '1pt'
  2072.     prefs.PV_font           = '10pt'
  2073.     prefs.PV_fSample       = ConvertText2hex('%FONTNAME\nabc\nABC')
  2074.  
  2075.     prefs.PV_sdir           = 'RAM:'
  2076.     prefs.PV_stext           = 'RAM:FontSample.iff'
  2077.     prefs.PV_size           = '12pt'
  2078.     prefs.PV_scale           = '0'
  2079.     prefs.PV_printWhat       = '0'
  2080.  
  2081.     prefs.PV_action           = '0'
  2082.  
  2083.     prefs.errorSkip        = 0
  2084. Return
  2085. /* /// */
  2086. /* /// SetListTitles()
  2087. */
  2088. SetListTitles: PROCEDURE
  2089.     Call GetAttr("G_AVAIL",  "ENTRIES", a_anz)
  2090.     Call GetAttr("G_SELECT", "ENTRIES", s_anz)
  2091.     Call Set("AVAILTEXT",  "CONTENTS", ParseText('%c%8 'a_anz' %nfonts available'))
  2092.     Call Set("SELECTTEXT", "CONTENTS", ParseText('%c%8 's_anz' %nfonts available'))
  2093. RETURN
  2094. /* /// */
  2095. /* /// ShowRequester(question, knobs)
  2096. */
  2097. ShowRequester:
  2098.     /*
  2099.     ** Show requester with some gadgets
  2100.     ** --------------------------------
  2101.     */
  2102.     PARSE ARG question,knobs
  2103.     Say question
  2104.     reqData = EasyRequest(question, pgsNAme, knobs)
  2105.     say reqData
  2106. Return reqData
  2107. /* /// */
  2108. /* /// SizeError()
  2109. */
  2110. SizeError:
  2111.     res    = ShowRequester("Current sample is too big to fit","skip|skip all|stop")
  2112.     IF (res = 0)
  2113.     THEN DO
  2114.         Call CLEANUP
  2115.         Exit
  2116.     END
  2117. Return res
  2118. /* /// */
  2119. /* /// WritePrefsNameValue(file, name)
  2120. */
  2121. WritePrefsNameValue:
  2122.     /*
  2123.     ** write parameter with value in file
  2124.     ** ----------------------------------
  2125.     */
  2126.  
  2127.     PARSE ARG file,name
  2128.  
  2129.     Interpret "saveSTR = '"|| name ||" = ""'"|| name ||"'""'"
  2130.     WriteLN(file, saveSTR)
  2131. Return
  2132. /* /// */
  2133.  
  2134. /* /// ON SYNTAX
  2135. */
  2136. SYNTAX:
  2137.     f = rc
  2138.     str =               "*-------------------------------------------*"
  2139.     str = str || '|' || "* Syntax Error in line "|| sigl
  2140.     str = str || '|' || "* "|| f ||":" ErrorText(f)
  2141.     str = str || '|' || "*-------------------------------------------*"
  2142.  
  2143.     /*
  2144.     ** Unlock PageStream and QUIT
  2145.     */
  2146.     ADDRESS 'PAGESTREAM'
  2147.     'LOCKINTERFACE FALSE'
  2148.     'REFRESH ON'
  2149.     'REFRESHWINDOW WINDOW "'|| oldWinName ||'"'
  2150.     ''defmeasure''
  2151.  
  2152.     Call pgsRequester(str)
  2153.  
  2154.     IF (f = 15)
  2155.     THEN DO
  2156.         Call pgsRequester('You should consider to register rxMUI.|Looks like the trial time is over.')
  2157.     END
  2158.  
  2159. EXIT
  2160. /* /// */
  2161.  
  2162.